import axios from "axios";
import { MessageBox } from 'element-ui';
import store from "@/store"; //使用vuex

let baseURL = 'http://47.104.167.34:9100/prod-api'

//弹窗标识符
let flag = true


//创建一个axios实例
const service = axios.create({
  //配置接口前缀
  baseURL: process.env.VUE_APP_BASE_API,
  // 设置超时时间
  timeout: 5000
})

//请求拦截器
service.interceptors.request.use((config) => {

  //token
  let token = 'Bearer ' + localStorage.getItem('token')
  if (localStorage.getItem('token') && config.url != "/login" && config.url != '/captchaImage') {
    config.headers = {
      'Content-Type': "application/json",
      "Authorization": token
    }
  }
  return config
}, (err) => {
  return Promise.reject(err)
})

//响应拦截器
service.interceptors.response.use((res) => {
  if (res.status == 200 && res.data.code == 200) {
    flag = true
    return res.data
  } else if (res.data.code == 401) {
    //控制只弹出一个弹窗
    if (flag) {
      MessageBox({
        title: '提示',
        message: "你的登录已过期，请重新登录",
      }).then(() => {
        //点确定之后 去登录
        store.dispatch('outLogin')
      })
      flag = false
    }
    return res.data
    //如果响应类型是二进制文件 把结果return回去
  }else if(res.request.responseType == 'blob'){
    return res.data
  } else {
    return Promise.reject(res.data)
  }
})

export default service
